const request = (config) => {
  // 解构参数，区分 GET/POST 参数
  const {
    url,
    method,
    data,
    params,
    ...rest
  } = config;
  const reqConfig = {
    ...rest,
    method: method.toUpperCase(), // 统一转大写
  };

  // GET 请求：参数放 params；POST/PUT 等：参数放 data
  if (reqConfig.method === 'GET') {
    reqConfig.data = params || data;
  } else {
    reqConfig.data = data || params;
  }

  // 自动添加 Token 到请求头（从缓存取）
  const token = uni.getStorageSync('token');
  if (token && url !== "auth/login") {
    reqConfig.header = {
      ...reqConfig.header,
      Authorization: `${token}`,
    };
  }

  if (url) {
    reqConfig.url = "https://pms.gwdg.com.cn:8118/api/" + url
  }

  // 加载提示
  uni.showLoading({
    title: '加载中...',
    mask: true
  });

  return new Promise((resolve, reject) => {
    uni.request({
      ...reqConfig,
      success(res) {
        const msg = res.data?.msg || '网络错误，请重试'
        if (res.statusCode === 200) {
          if (res.data.code === "00000") {
            resolve(res.data);
          }
        } else {
          uni.showToast({
            title: msg,
            icon: 'none'
          });
        }
      },
      fail(err) {
        uni.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        });
        reject(err);
      },
      complete() {
        uni.hideLoading(); // 无论成败，关闭加载
      },
    });
  });
}


export default request;
